home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HPAVC
/
HPAVC CD-ROM.iso
/
FAQSYS18.ZIP
/
FAQS.DAT
/
DMADOC.TXT
< prev
next >
Wrap
Text File
|
1993-11-11
|
8KB
|
233 lines
DIRECT MEMORY ACCESS CONTROLLER (Type 1, PS/2 Type)
===================================================
The Direct Memory Access (DMA) controller allows I/O devices to
transfer data directly to and from memory. This frees the system
microprocessor of I/= tasks, resulting in a higher throughput.
The functions of the DMA controller can be grouped into two
categories: program mode and DMA transfer mode.
The DMA controller supports the following:
* Register an program compatibility with the IBM Personal
Computer AT DMA channels (8237 compatible mode)
* 16MB 24-bit address capability for memory and 64Kb 16-bit
address capability for I/O
* Eight (AT only 4?) independent DMA channels capable of
transferring data between memory and I/O devices
DMA Controller Operations
-------------------------
The DMA controller does two types of operations:
* Data transfer between memory and I/O devices
* Read verifications ( not documentet here )
DATA TRANSFER BETWEEN MEMORY AND I/O DEVICES
The DMA controller performs serial transfer for all read and write
operations. These transfers can be between memory and I/O on any
channel. Data is read from a device and latched in the DMA
controller before it is ritten back to a second device. The memory
address needs to be specified only for a DMA data transfer. A
programmable 16-bit address can be provided during the
I/O portion of the transfer as a programmable option. If the
programmable 16 bit-bit address is not selected, the
I/O address is forced to hex 0000 during the I/O transfer.
Figure 1. DMA I/O Address Map:
Address Description Bit Byte
(hex) Description Pointer
0000 Channel 0, Memory address reg. 00-15 Used
0001 Channel 0, Transfer Count reg. 00-15 Used
0002 Channel 1, Memory address reg. 00-15 Used
0003 Channel 1, Transfer Count reg. 00-15 Used
0004 Channel 2, Memory address reg. 00-15 Used
0005 Channel 2, Transfer Count reg. 00-15 Used
0006 Channel 3, Memory address reg. 00-15 Used
0007 Channel 3, Transfer Count reg. 00-15 Used
0008 Channel 0-3, Status reg. 00-07
000A Channel 0-3, Mask reg. (Set/Re) 00-02
000B Channel 0-3, Mode reg. (Write) 00-07
000C Clear byte pointer (Write) N/A
000D DMA Controller reset (Write) N/A
000E Channel 0-3, Clear Mask reg.(W) N/A
000F Channel 0-3, Write Mask reg. 00-03
0081 Channel 2, Page Table Addr.reg. 00-07 **
0082 Channel 3, Page Table Addr.reg. 00-07 **
0083 Channel 1, Page Table Addr.reg. 00-07 **
0087 Channel 0, Page Table Addr.reg. 00-07 **
** Upper byte of memory address register.
Figure 1. DMA I/O Address Map
BYTE POINTER
------------
A byte pointer gives 8-bits ports access to consecutive bytes of
registers grater than 8 bits. For program I/O, the registers which
use it are the Memmory Address registres (3 byes), the Transfer
Count registers (2 bytes),and the I/O Address registers (2 bytes).
Interrupts shuld be masked off when programming DMA controller
operations.
DMA Registers
-------------
All system microprocessor access to the DMA controller must be 8-
bit I/O instructions. The following lists the name and size of the
DMA registers
Figure 2. DMA registers
Size Quantity of Allocation
Register (bits) registers
Memory Address 24 8 1 per channel
I/O Address 16 8 1 per channel
Transfer Count 16 8 1 per channel
Temp. Holding 16 1 All channels
Mask 4 2 1 for channels 3-0
Arbus 4 2 1 for channels 0
Mode 8 8 1 per channel
Status 8 2 1 for channel 3-0
Function 8 1 All channels
Refresh 9 1 independent of DMA
Figure 2. DMA Registers
MEMORY ADDRESS REGISTER
-----------------------
Each channel has a 24-bit (AT 16-bit) Memory Address register,
which is loaded by the system microprocessor. The Mode register
determines wheter the adress is incremented or decremented. The
Mode register can be read by the system microprocessor on
successive I/O byte operations. To read this register, the
microprocessor must use the extended DMA commands (not documented
here).
I/O ADDRESSE REGISTER
---------------------
Each channel has a 16-bit I/O Adress register, which is loadedd by
the system microprocessor. The bits in this register do not change
during DMA transfers. This register can be read by the system
microprocessor in successive I/O byte operations. To read this
register, the microprocessor must use the extended DMA commands
(not documented here).
Typically, a DMA slave is selected for DMA trasnfers by a decode of
the arbitration level, status (-S0 exclusively ORed with -S1), and
M/-IO. In this case, the respective I/O address register must have
a value of zero.
A DMA slave may be selected based on a decode of the address rather
the arbitration level. In this case, the respective I/O address
register must have the proper I/O address value.
TRANSFER COUNT REGISTER
-----------------------
Each channel has a16-bit Transfer Coun register, which is loaded by
the system microprocessor. The transfer count determines how many
transfers the DMA channel wil execute before reaching the terminal
count. The number of transfers is always 1 more than the count
specifies. If the count is 0, DMA controller doen one transfer.
This register can be read by the microprocessor in successive I/O
byte operations. To read this register, the system microprocessor
can use only the extended DMA commands.
TEMPORARY HOLDING REGISTER
--------------------------
This 16-bit register holds the intermediate value for the serial
DMA transfer taking place. A DMA operation requires the data to
be held in the register before it is written back. This register is
not accessible by the system microprocessor.
MASK REGISTER
-------------
Figure 3. Set/Clear single mask bit using 8237 compatible mode:
Bit Function
7 - 3 Resered = 0
2 0 Clear Mask Bit
1 Set Mask Bit
1, 0 00 Select channel 0
01 Select channel 1
10 Select channel 2
11 Select channel 3
Figure 3. Set/Clear single mask bit using 8237 compatible mode.
Figure 4. DMA Mask register write using 8237 compatibel mode:
Bit Function
7 - 4 Reserved = 0
3 0 Clear Channel 3 Mask bit
1 Set Channel 3 Mask bit
2 0 Clear Channel 2 Mask bit
1 Set Channel 2 Mask bit
1 0 Clear Channel 1 Mask bit
1 Set Channel 1 Mask bit
0 0 Clear Channel 0 Mask bit
1 Set Channel 0 Mask bit
Figure 4. DMA Mask register write using 8237 compatibel mode.
Each channel has o corresponding mask bit that, when set, disables
the DMA from servicing the requesting device. Each mask bit can be
set to 0 or 1 by the system microprocessor. A system reset or DMA
Controller Reset commands sets all mask bits to 1. A Clear Mask
Register command sets mask bits 0-3 to 9.
When a device requestind DMA cycles wins the arbitration cyce, and
the mask bit is set to 1 on the corresponding channel, the DMA
ontroller does not execute any cycles it behalf and allows external
devices to provide the transfer. If no device responds, the bus
times out and causes a nonmaskable interrupt (NMI). This register
can be programmed using the 8237 compatible mode commands (used by
the IBM Personal Computer AT) or the extended DMA commands (not
documented here).
MODE REGISTER
-------------
The Mode register for each channel identifies the type of operation
that takes place when that channel transfers data.
Figure 5. 8237 Compatible Mode Register:
Bit Function
7, 6 Reserved = 0
5, 4 Reserved = 0
3, 2 00 Verify operation
01 Write operation
10 Read operation
11 Reserved
1, 0 Channel accessed
00 Select channel 0
01 Select channel 1
10 Select channel 2
11 Select channel 3
Figure 5. 8237 Compatible Mode Register.
The Mode register is programmed by the system microprocessor, and
its contents are reformatted and stored internally in the DMA
controller. In the 8237 compatible mode, this register can only be
written.